package 设计原则.依赖倒置原则;

/**
 * 上面代码`Person`内部的`feed`方法依赖于`Dog`，是上层方法中又依赖于下层的类。
 * <p>
 * 当有需求变更，人的宠物不止有狗狗，还可以是猫等等，这时候需要修改上层类，这带来的是重用性的问题，同时还违反上面提到的`开闭原则`。
 * <p>
 * <p>
 * 正例：
 *
 * @author lxiaol
 * @date 2021年06月23日 18:50
 */
public class postive {

    public static void main(String[] args) {
        Person2 person= new Person2();
        Dog2 dog = new Dog2();
        Cat2 cat = new Cat2();
        person.feed(dog);
        person.feed(cat);
    }
}

class Person2 {
    public void feed(Animal3 animal){
        animal.eat();
    }
}

class Dog2 implements Animal3 {
    @Override
    public void eat() {
        System.out.println("我是狗狗，主人喂我了。汪汪汪...");
    }
}

class Cat2 implements Animal3{
    @Override
    public void eat() {
        System.out.println("我是猫咪，主人也喂我了。（我为什么要说也？）喵喵喵...");
    }
}